chrome-plugins-main-QA Delayer (1).zip

🐌 QA Delayer - Chrome Extension

Специализированный плагин для QA тестирования - имитация задержек и HTTP ошибок для тестирования производительности и обработки ошибок.

🚀 Возможности

  • 📡 Медленное соединение: универсальная задержка отправки запросов
  • 🐌 Медленный сервер: точные задержки ответа для ERVU доменов + localhost
  • ❌ Имитация HTTP ошибок: 400, 401, 403, 404, 422, 429, 500, 502, 503, 504, timeout
  • 🎭 Мокинг ответов: полная замена ответа сервера на настраиваемый мок
  • 🔧 Поддержка всех типов запросов: XHR, fetch, axios
  • 🎯 Гибкие фильтры: RegExp паттерны для выборочного воздействия
  • 🧪 Живое тестирование: проверка паттернов прямо в интерфейсе
  • 📝 Подробное логирование: детальная информация о задержках и моках
  • 🔄 Сброс настроек: быстрый возврат к дефолтным значениям

🔄 Режимы работы

⏱️ Задержка запросов

📡 Медленное соединение

Универсальная имитация плохого интернет-соединения

Клиент ──задержка 10сек──> Сервер ──> Быстрый ответ
  • Поведение: запрос не отправляется указанное время
  • DevTools: запрос появляется только через 10 сек и быстро выполняется
  • Совместимость: работает для ВСЕХ доменов
  • Использовать для:
    • Тестирования таймаутов бэкенда
    • Имитации плохой связи
    • Проверки retry логики

🐌 Медленный сервер

Точная имитация медленно отвечающего сервера

Клиент ──> Сервер ──задержка 10сек──> Клиент (точно через 10сек)
  • Поведение: HTTP-запрос выполняется сразу, JavaScript ждет указанное время
  • DevTools: запрос появляется сразу с реальным временем (например, 64мс)
  • JavaScript: получает ответ точно через указанное время (10сек)
  • Совместимость: только для поддерживаемых доменов
  • Поддерживаемые домены:
  • Использовать для:
    • Точного тестирования таймаутов приложения
    • Проверки UX при долгих операциях
    • Отладки лоадеров и индикаторов прогресса

❌ Имитация HTTP ошибок

Полная подмена ответа ошибкой (запрос не выполняется)

Клиент ──X──> ❌ HTTP 500 Error (без обращения к серверу)

Доступные ошибки:

  • 400 - Bad Request (неправильный запрос)
  • 401 - Unauthorized (не авторизован)
  • 403 - Forbidden (доступ запрещен)
  • 404 - Not Found (не найдено)
  • 422 - Unprocessable Entity (невалидные данные)
  • 429 - Too Many Requests (превышен лимит)
  • 500 - Internal Server Error (ошибка сервера)
  • 502 - Bad Gateway (плохой шлюз)
  • 503 - Service Unavailable (сервис недоступен)
  • 504 - Gateway Timeout (таймаут шлюза)
  • ⏰ Timeout - зависает навсегда

🎭 Мокинг ответов

Полная замена ответа сервера настраиваемым моком (запрос не выполняется)

Клиент ──X──> 🎭 Мок-ответ (без обращения к серверу)

Настраиваемые параметры:

  • HTTP статус: любой код от 100 до 599 (200, 404, 500...)
  • Статус текст: "OK", "Not Found", "Internal Server Error"...
  • Заголовки: JSON объект с заголовками ответа
  • Тело ответа: любой контент (JSON, HTML, текст)

Автоматическая совместимость:

  • fetch(): возвращает корректный Response объект
  • XMLHttpRequest: эмулирует события и свойства XHR
  • axios: возвращает объект в формате axios response

Использовать для:

  • Разработки фронтенда когда бэкенд не готов
  • Замены реального 410/500 ответа на нужный мок
  • Тестирования различных сценариев без изменения сервера
  • Имитации сложных API ответов

📦 Установка

  1. Скачай или склонируй проект
  2. Открой Chrome → НастройкиРасширения
  3. Включи "Режим разработчика"
  4. Нажми "Загрузить распакованное расширение"
  5. Выбери папку с проектом
  6. Готово! 🎉

⚙️ Использование

Быстрый старт

  1. Кликни на иконку плагина в браузере
  2. Включи плагин
  3. Выбери тип воздействия:
    • ⏱️ Задержка запроса
    • ❌ HTTP ошибка
    • 🎭 Мок ответа
  4. Настрой параметры:
    • Для задержки: режим (соединение/сервер) + время в миллисекундах
    • Для ошибок: тип ошибки (400, 500, timeout...)
    • Для мокинга: статус, заголовки, тело ответа
  5. Добавь URL паттерн или оставь пустым для всех запросов
  6. Сохрани настройки или Сбрось к дефолтным

Автоматический fallback

Если выбран 🐌 Медленный сервер, но домен не поддерживается:

⚠️ Domain not supported for slow server, using slow connection instead

Плагин автоматически переключится на 📡 Медленное соединение.

Примеры паттернов

/service/ervu-person-registry/conversion/v1/log    # Точный путь
.*api.*                                            # Все API запросы  
^https://localhost:8080.*                          # Конкретный домен
/users/\d+                                         # RegExp: /users/123

Тестирование паттернов

В popup используй поле "Тест URL":

Введи: /service/ervu-person-registry/conversion/v1/log
Результат: "URL подходит ✓" или "URL не подходит ✗"

💡 Примеры использования

Точное тестирование медленного сервера

Домен: ervu-dev.ervu.rt-sk.ru или localhost:3000
Тип: ⏱️ Задержка запроса  
Режим: 🐌 Медленный сервер
Задержка: 5000ms
Паттерн: .*conversion.*
Результат: В DevTools запрос выполнится за 64мс, 
          но JavaScript получит ответ через 5000мс

Тестирование обработки ошибок авторизации

Тип: ❌ HTTP ошибка
Ошибка: 401 - Unauthorized
Паттерн: /api/user/.*
Результат: Все запросы к пользователю вернут ошибку 401

Мокинг API когда бэкенд не готов

Тип: 🎭 Мок ответа
HTTP статус: 200
Заголовки: {"Content-Type": "application/json"}
Тело: {"inc1342count": "15", "defectResolveEnable": true}
Паттерн: /api/defect/info
Результат: Вместо реального 410 получишь мок-данные

Замена ошибочного ответа сервера

Тип: 🎭 Мок ответа  
HTTP статус: 410
Тело: {"error": "Resource has been moved permanently"}
Паттерн: /service/legacy-api/.*
Результат: Имитация корректного 410 ответа вместо багнутого

Локальная разработка

Домен: localhost:3000
Режим: 🐌 Медленный сервер
Задержка: 3000ms
Результат: Локальные API будут отвечать точно через 3 секунды

🛠 Технические детали

Как работают задержки

📡 Медленное соединение (универсальный):

// Задерживаем отправку запроса
await delay(5000);
return fetch('/api');

🐌 Медленный сервер (для поддерживаемых доменов):

// Отправляем запрос сразу, но задерживаем обработку
const startTime = Date.now();
const response = await fetch('/api');
const actualDuration = Date.now() - startTime;

// Ждем до полной задержки
const remainingDelay = Math.max(0, delayMs - actualDuration);
if (remainingDelay > 0) {
    await delay(remainingDelay);
}
return response;

🔍 Отладка

Консоль браузера

При работе плагина увидишь:

[QA Delayer] Ready - call qaDelayerDebug() for info

# Медленное соединение:
[QA Delayer] 📡 Simulating slow connection for POST /api/search - delaying request by 5000ms
[QA Delayer] 📡 Now sending delayed XHR POST /api/search

# Медленный сервер:
[QA Delayer] 🐌 Simulating slow server response for: POST https://ervu-dev.ervu.rt-sk.ru/api/search - 20000ms
[QA Delayer] 🐌 XHR completed in 64ms, waiting 19936ms more for total 20000ms

# Fallback:
[QA Delayer] ⚠️ Domain not supported for slow server, using slow connection instead: https://external-api.com/data

# Ошибки:
[QA Delayer] ❌ Simulating 500 error for axios POST /api/upload
[QA Delayer] ❌ Simulating timeout error for fetch GET /api/status

# Мокинг:
[QA Delayer] 🎭 Returning mock response for fetch GET /api/defect/info
[QA Delayer] 🎭 Creating mock response for /api/users: {status: 200, body: "..."}
[QA Delayer] 🎭 Returning mock response for axios.post /api/search

Функции отладки

В консоли браузера доступны:

qaDelayerDebug()                    // Показать текущие настройки
qaDelayerTest("/api/users")         // Проверить подходит ли URL

Если не работает

  1. Проверь консоль на ошибки и логи
  2. Убедись что плагин активен (статус в popup)
  3. Проверь паттерны через тестер в popup
  4. Для медленного сервера убедись что домен поддерживается
  5. Для localhost используй http://localhost:PORT или https://localhost:PORT

🎯 Сценарии использования

QA тестировщику ERVU:

  • 🎯 Медленный сервер: точное тестирование таймаутов на dev/cert окружениях
  • 📡 Медленное соединение: имитация плохой связи для всех запросов
  • 🏠 Localhost: тестирование локальных разработок с теми же условиями
  • Fallback: работа на любых сайтах без дополнительных настроек
  • 🔒 Ошибки: полная проверка обработки 4xx/5xx статусов
  • 🎭 Мокинг: тестирование с правильными данными когда бэк возвращает 410
  • 🔄 Быстрый сброс: возврат к дефолтным настройкам одной кнопкой

Frontend разработчику:

  • 🎨 Отладить состояния загрузки и error states
  • 📊 Проверить UX при медленных ответах сервера vs медленном соединении
  • ⚡ Различить проблемы сети (64мс в DevTools) и логики приложения (20сек ожидания)
  • 🔄 Отработать retry механизмы при разных типах задержек
  • 🎭 Проверить корректность лоадеров и таймеров
  • 🔧 Мокинг API: разработка фронтенда без готового бэка
  • 📋 Тестирование разных сценариев: быстрая смена ответов для edge cases
  • 🎯 Дебаг конкретных багов: воспроизведение проблемных ответов сервера

🌟 Уникальные особенности

Специализация под ERVU

  • Точные permissions только для нужных доменов
  • Автоматическое определение относительных путей
  • Localhost support для полного цикла разработки
  • Умный fallback для неподдерживаемых доменов

Реалистичность тестирования

  • Медленный сервер: видишь реальное время сети (64мс) + точную задержку приложения
  • Медленное соединение: видишь полную задержку в DevTools
  • Правильные логи: различаешь что именно замедляется

Developer Experience

  • Живая валидация паттернов в UI
  • Подробные логи с временными метриками
  • Автоматические подсказки по совместимости режимов
  • Отладочные функции в консоли браузера
  • Умные моки: автопарсинг JSON, корректные заголовки
  • Кнопка сброса: быстрый возврат к чистому состоянию
  • Гибкие настройки: от простого статуса до сложных API ответов

💡 Рекомендации по использованию:

  • 📡 Медленное соединение: используй для тестирования сетевых таймаутов и retry логики
  • 🐌 Медленный сервер: используй на ERVU доменах и localhost для точного тестирования логики приложения
  • 🎭 Мокинг: незаменим когда бэк возвращает 410 или еще не готов
  • 🔍 DevTools: при медленном сервере смотри на реальное время запроса vs время ожидания в коде
  • ⚠️ Fallback: если видишь предупреждение о неподдерживаемом домене - это нормально, работает медленное соединение
  • 🧪 Тестирование: комбинируй все режимы для полного покрытия сценариев
  • 📊 Метрики: используй логи для понимания реального vs искусственного времени
  • 🔄 Быстрый сброс: не накапливай сложные настройки, сбрасывай к дефолтным

Создано специально для QA команды ERVU 🧪✨

Написать комментарий...